package polymorphic02;
/*
* 向下转型
*   格式：子类型 引用变量 = (子类型)父类型引用变量
* */
class Person{
    public void eat(){
        System.out.println("吃东西");
    }
}
class Student extends Person{
    public void student(){
        System.out.println("学习");
    }
}
public class Demo02 {
    public static void main(String[] args) {
        Student student = new Student(); // 普通创建Student对象 可以使用eat()和student()
        Person p = new Student(); // 向上转型 ：有个学生是人
                                  //  类比基本数据类型： double d = 3;  相当于int 3 转化为 double类型
                                //  把父类看作大类型，把子类看做小类型
                                // Student => Person
        p.eat(); // 由于p指向的学生对象扮演的是人的角色，所以可以调用Person类中的方法
        // p.student();  // 由于p指向的学生对象扮演的是人的角色，但是人角色不具有学生的学习方法。

        Student s = (Student) p;   // 类比基本数据类型： int i = (int) d 将double类型强转为int类型
                                  // Person => Student  大类型转化为小类型需要强转
                                    // 把s指向的学生对象扮演的是学生角色，所以可以调用学生类的方法
        s.eat();
        s.student();
    }
}


